Systems and methods for smart device networking

ABSTRACT

A system for smart device networking includes an endpoint that enables communication with a connected device, a bridge that communicates with the endpoint over a PAN and relays PAN communications to a WAN, and a router that connects to the bridge through the WAN and routes communication to and from the endpoint.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/919,664, filed 21 Oct. 2015, which claims the benefit of U.S.Provisional Application Ser. No. 62/066,678, filed on 21 Oct. 2014, bothof which are incorporated in their entirety by this reference.

TECHNICAL FIELD

This invention relates generally to the computer networking field, andmore specifically to new and useful systems and methods for smart devicenetworking.

BACKGROUND

The modern internet has revolutionized communications by enablingcomputing devices to transmit large amounts of data quickly overincredibly vast distances. Over time, the internet has expanded beyondcomputers to include connectivity to a plethora of smart devices—fromsmartphones to tablets to connected appliances. The Internet of Things(IoT), one of the most recent expansions, brings connectivity to an evenwider range of smart devices; but traditional methods of networking areill suited to the inclusions of these new smart devices. Thus, there isa need in the computer networking field to create new and useful systemsand methods for smart device networking.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a diagram representation of a system of a preferredembodiment;

FIG. 2 is a diagram representation of a system of a preferredembodiment;

FIG. 3 is a diagram representation of an endpoint of a system of apreferred embodiment;

FIG. 4 is a swim lane diagram representation of instruction modificationby a processor of an endpoint of a system of a preferred embodiment;

FIG. 5 is a diagram representation of a bridge of a system of apreferred embodiment;

FIG. 6 is a flowchart representation of an encryption method;

FIG. 7 is a flowchart representation of an encryption method of a systemof a preferred embodiment;

FIG. 8 is an example representation of a NetJoinAsk frame of a system ofa preferred embodiment;

FIG. 9 is an example representation of a NetJoinAns frame of a system ofa preferred embodiment;

FIG. 10 is an example representation of a data frame of a system of apreferred embodiment; and

FIGS. 11A and 11B are diagram representations of a bridge of a system ofa preferred embodiment.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiments of the inventionis not intended to limit the invention to these preferred embodiments,but rather to enable any person skilled in the art to make and use thisinvention.

A system 100 for smart device networking includes pluralities ofendpoints 110, bridges 120, and routers 130, as shown in FIGS. 1 and 2.The system may additionally include one or more key servers 140. Thesystem 100 functions to provide internet access and intelligence todevices and is based on simple device connectivity, end-to-end security,low power requirements, low cost, and ease of development.

Advances in technology have enabled embedded technology to grow incomputational power even as their physical size and cost shrinks,enabling embedded devices to find their way into more and moretechnological applications. Simultaneously with this development,wireless networking coverage (and thus wireless internet access) hassteadily expanded, bringing the possibility of connectivity to many ofthese embedded devices. Together, these advances have enabled the riseof the Internet of Things (IoT). Research firms estimate that over 26billion devices will be connected to the IoT by 2020, with someestimates topping 30 billion.

The Internet of Things has applications in almost every field ofinterest, with some of the most prominent applications finding use inenvironmental monitoring, infrastructure management, industrialapplications, energy management, medical and healthcare systems, andbuilding automation.

Unfortunately, traditional methods for wireless networking are in manyways woefully inadequate to handle IoT connectivity. Most wirelessnetworking protocols are designed for relatively high bandwidths (tomeet data transfer requirements of personal computers, tablets,smartphones, etc.) and need at least some amount of backwardscompatibility, owing to the well-established position of wirelessnetworking as a communication means for traditional computers.Additionally, these traditional methods are often designed for arelatively small number of devices; it's hard to imagine a home havingtwo hundred personal computers, but if we imagine each sensor, switch,and appliance having connectivity, suddenly that number seems a lotsmaller. Due to the compromises inherent in such traditional methods,traditional wireless networking suffers from limited range, complicatedconfiguration, high power consumption requirements, and often limitedsecurity capabilities.

The system 100 serves to bring internet connectivity to sensors,actuators, and other devices without these compromises. Based on theprinciples that a system designed for IoT connectivity should beinexpensive, require a minimum of manual configuration, integratehardware security, and have high coverage, long range, and low powerconsumption requirements, the system 100 is designed from the ground upto encourage the proliferation of connected smart devices.

The system 100 enables a flexible topology that allows computing powerto be allocated where it is needed most—in some cases, the system 100may operate to concentrate computing power in the cloud; this may beuseful in situations where latency between smart devices and the cloudis not critical and/or in situations where the majority of dataprocessing performed by the system requires a substantial amount ofcomputing power.

However, in many cases, the system 100 may operate to distributecomputing power to the edge of the network. Such an operation mode maybe optimal for highly data-intensive or highly connected systems whererelatively simple data processing can greatly reduce the amount of datathat needs to be sent to the cloud; this may result in improvedmanagement of cloud processing resources as well as increased batterylife at the edge of the network (through optimization of radio use).

Regardless of system operational mode, the use of intelligent endpointswithin the system 100 enables easy transitions from one set ofallocation parameters to another.

Internet connectivity for a device connected to the system 100 begins atan endpoint no. The endpoint 110 is preferably connected to a singledevice and enables the device to communicate over a wireless network ofthe system 100. Each endpoint is preferably associated with an IPv6address, enabling easy addressing. The endpoint 110 connects wirelesslyto one or more bridges 120; the bridges 120 receive data from theendpoint no and pass it on, preferably through the internet, to one ormore routers 130. The routers 130 analyze the content of the data androute it to its intended destination. Data is encrypted before leavingthe endpoint 110 and remains encrypted until processing at the router130, minimizing the likelihood of successful interception; and althoughin many instances the system passes traffic between the bridges 120 androuters 130 over the internet, for sensitive data the system 100 may berun entirely on-premise.

The endpoint 110, as shown in FIG. 3, functions to receive data from adevice, prepare the data for transmission, and transmit the datawirelessly (preferably over a personal area network) to a bridge 120 orother device. Additionally or alternatively, the endpoint 110 mayperform the opposite task: receiving data wirelessly from a bridge 120,preparing the data to be read or otherwise acted upon by a device, andtransmitting the data to the device.

The endpoint 110 preferably is capable of bidirectional communication,but may additionally or alternatively be capable only of unidirectionalcommunication.

The endpoint 110 preferably includes a device interface 111, a processor112, and a radio 113. The endpoint 110 may additionally or alternativelyinclude any number of device interfaces 111, processors 112, and radios113.

The device interface 111 functions to enable communication between theendpoint 110 and a device connected to the system 100. The deviceinterface 111 preferably communicates with the endpoint 110 over one ormore data connections. Data transmitted from the device is preferablytransmitted as analog or digital electrical signals, but mayadditionally or alternatively be transmitted in any suitable way (e.g.,optically, sonically, RF wirelessly). Data may be transmitted usingknown bus standards such as I2C or SPI, over JTAG connectors, over GPIOconnectors, over serial connections using RS-232 or other standards, orin any suitable manner. Data may also be transmitted as analog signaldata to be converted according to instructions provided to the interface111 or the processor 112, or in any other suitable manner. Data linesconnected to the device interface 111 may be unidirectional orbidirectional.

The device preferably communicates with the device interface 111according to a known and open standard, but may additionally oralternatively communicate with the device interface 111 any suitableway. For example, if the endpoint 110 is connected to an analog sensor,the endpoint no may dictate how the data is sampled and processed fromthe sensor. Likewise, if the endpoint no is connected to an actuator,the endpoint no may dictate what signal is sent to control actuation ofthe actuator.

The device interface 111 may perform processing before passing data tothe processor 112; for example, the device interface 111 might includean I2C/SPI to USART bridge. As another example, the device interface 111might include an analog-to-digital converter (ADC); this might be usefulin the example where the device is an analog sensor. Additionally oralternatively, this processing may occur at the processor 112.

Endpoints no designed for particular applications preferably includecustom device interfaces 111 intended for a specific type of datatransmission; endpoints 110 may additionally or alternatively includegeneral device interfaces 111 that feature a number of different datatransmission options.

The processor 112 functions to process data transmitted or received bythe endpoint 110; data processed by the processor 112 may originate fromeither the device interface 111 or the radio 113 (or from any othersuitable source). The processor 112 is preferably a microcontroller, butmay additionally or alternatively be any suitable type of microprocessoror other processing unit. The processor 112 preferably processes dataaccording to instructions in stored firmware and/or software, but mayadditionally or alternatively process data according to any othersuitable instructions. In some cases, the processor 112 may simplyforward data from the interface 111 to the radio 113 or vice versa,potentially changing only the data format or signaling method. In othercases, the processor 112 may perform more processing on data beforesending it or after receiving it; for example, if the processor 112 isconnected to an analog temperature sensor and an analog humidity sensor,the processor 112 may sample both sensors at identical time intervalsand pass along both readings along with time data.

In one implementation of a preferred embodiment, the processor 112stores historical data transmitted over the device interface 111 andmakes decisions about how to respond to current data based on storedhistorical data and/or other instructions stored in firmware and/orsoftware. For example, the processor 112 may transmit differentialvalues (potentially after transmitting a first absolute value) formeasurements taken by a sensor coupled to the device interface 111. Inthis example, the processor 112 may only transmit differential valuesover the PAN radio 113 when they exceed a threshold (e.g., temperaturechanges by more than 0.1 degrees Celsius). By reducing the number oftransmissions made by the PAN radio 113, the processor 112 may extendendpoint 110 battery life. Additionally or alternatively, the processor112 may perform any suitable processing to reduce the number oftransmissions made by the PAN radio 113.

As another example, the processor 112 may store and transmit all of aset of data, but batch the set of data according to properties of saiddata. For example, the processor 112 may store all readings taken by asensor coupled to the device interface in, but transmit those readingsonly when a trigger (e.g., threshold change over historical value orover historical average exceeded) occurs. Unlike the previous example,this example may not result in substantially less data transmitted, butit still may result in more efficient radio usage.

The response of the processor 112 may be particularly important in caseswhere a low-latency response by the system 100 to some event isrequired. In traditional cloud-intelligence systems, the endpoint isoften helpless to make decisions when the cloud provides crucial data orinstructions too slowly. In some cases, this may be mitigated bypre-storing some responses to certain scenarios at the endpoint, butmaintaining these pre-stored responses across endpoints may be adifficult challenge as the complexity of the response increases (andvaries at a per-endpoint level).

In one implementation of a preferred embodiment, the processor 112stores both data patterns (e.g., sets of data received or transmittedover the device interface 111) and instructions received from the router130 in response to those data patterns (as transmitted to the router130). In this implementation, the processor 112 may identify repeatedinstances of data pattern/instruction correlation. After a confidencethreshold is met, the processor 112 may use these correlations as backupinstructions when instructions from the cloud are not readily available.In this manner, the processor 112 may be able to respond to scenariosthat would normally require either manual configuration of the endpointand/or complex computation without the performance of either manualconfiguration or complex computation. For endpoints 110 with similarfunctions, these responses may be shared across endpoints. For example,an endpoint 110 may be coupled to a current monitor that monitorscurrent flowing to a refrigerator, an actuator that activates ordeactivates the refrigerator's compressor, and several temperaturesensors within the refrigerator. The endpoint 110 regularly transmitsdata from the current monitor and the temperature sensors to an externalserver (via the router 130). Sometimes, the refrigerator malfunctionsand the compressor needs to be cycled to maintain appropriatetemperature in the refrigerator; this is programmed in the externalserver. Eventually, the endpoint 110 associates a pattern of currentreading differences with the compressor cycling command (typically sentby the external server to the endpoint 110, and then accomplished viathe actuator). Now, the endpoint 110 can perform that operationautomatically if there is a delay (or even just if the typical responseis slower than ideal) between the recognition of the particular currentreading pattern and the actuation of the compressor actuator. Suchpattern recognition may be accomplished using machine learning or anyother suitable technique.

The processor 112 may also modify instructions received via the router130 based on latency and/or other data received by the processor 112.For example, the endpoint 110 may be connected to a robotic arm and amachine vision system. The robotic arm is directed to move to aparticular target being imaged by the machine vision system; obviously,the instructions given have a dependence on the range between the armand the target as imaged. An external system provides instruction to theendpoint 110 to move the arm based on the current position of the armand the received data from the machine vision system, but during thetime the imaging data is sent from the machine vision system and thetime the instruction is received at the robotic arm, the target may havemoved, resulting in the robotic arm being moved to an inaccurateposition. As shown in FIG. 4, the endpoint processor 112 may modify theinstruction received from the external system based on updated data fromthe machine vision system. Such a system may be particularly useful insituations where complex or resource-intensive algorithms are requiredto make decisions based on input data, but a simpler algorithm could beused to interpolate or extrapolate new decision data from small changesto input data. Note that in the endpoint processor 112 may modifyinstructions based on any relevant data, not just updated sensor data.For example, the endpoint processor 112 may modify instructions based onlatency itself. For example, an external system might send a command“ramp down lathe RPM from 1000 rpm to 100 RPM in 1000 ms”; if, for thisparticular system, the final RPM being set at the appropriate time ismore important than the actual ramp, the processor 112 may modify thecommand sent to the lathe to look more like “ramp down lathe RPM from1000 rpm to 100 RPM in (1000—latency) ms”.

A person of ordinary skill in the art will recognize that the techniquesdescribed in the preceding examples may be combined in any manner. Theprocessor 112 may process data received or transmitted over the deviceinterface 111 in any manner.

The processor 112 firmware and/or other endpoint 110 firmware arepreferably flash-able over the air (OTA), allowing updates to reach theendpoint 110 without manual or individual configuration.

The processor 112 preferably also performs power management for theendpoint 110. In particular, the processor 112 preferably puts theendpoint 110 into a sleep mode after a period of inactivity (oraccording to a set schedule). The processor 112 is preferably also ableto put the endpoint 110 to sleep (putting the device interface 111,processor 112, and radio 113 into low-power consumption modes) accordingto a command. When the endpoint 110 is sleeping, it preferably drawsonly a few microamps of current. Upon awakening, the endpoint 110 isimmediately able to send and receive data, unless the bridge 120 thatthe endpoint was connected to is no longer available. In that case, theendpoint 110 preferably automatically connects to an available bridge120.

The processor 112 preferably also serves to establish connectivitybetween the endpoint 110 and the bridge 120. When the endpoint 110 isfirst powered on or wakes up from sleep, the processor 112 preferablydirects the endpoint 110 to search for available bridges 120 (over theradio 113). When the endpoint 110 finds an available bridge 120, itpreferably sends data to the bridge 120; if the endpoint 110 receives anacknowledgment (e.g., an ACK packet) from the bridge 120, the endpointhas successfully associated with a particular bridge 120. This processis described in more detail in sections discussing connectivity betweenthe endpoint 110 and bridge 120.

The processor 112 may additionally control messaging parameters for theendpoint 110. For example, the endpoint 110 may operate using carriersense multiple access (CSMA); the endpoint 110 checks to see if anotherdevice is transmitting on the endpoint no's transmit channel beforetransmitting and preferably waits until no other devices aretransmitting on the transmit channel to send a message (e.g., listenbefore talk (LBT)).

The processor 112 may set messaging parameters to aid with powermanagement, for example, the endpoint 110 may wake up at set timeintervals, transmit data, and then stay active for a period of timeafter transmission before shutting off again. This time period ispreferably communicated to the router 130 or bridge 120 (or set by therouter 130 or the bridge 120), such that the system 100 knows to sendany relevant information to the endpoint 110 during its ‘on period’following data transmission. In one implementation of a preferredembodiment, the endpoint no's on period may be extended; for example,explicitly after receiving “keep awake” flags from the bridge 120, orimplicitly during multicast mode transmissions from the bridge 120.

In one implementation of a preferred embodiment, the processor 112modifies power management parameters (e.g., wake up intervals) based ondata received over the device interface 111 and/or data received overthe PAN radio 113. For example, the processor 112 may activate the radio113 more or less based on the differential between sensor measurementsreceived over the device interface 111 (e.g., batching intervals may belonger for sensors reporting lower change than for sensors reportinghigher change). As another example, the processor 112 may activate theradio 113 more or less based on the frequency or type of commands sentto the endpoint 110 via the bridge 120. For example, if the primary taskof an endpoint 110 is to communicate a particular set of data or performan action when requested via the bridge 120, the processor 112 maymodify wake-up intervals based on how frequently data or actionperformance is requested. Further, to the extent that the endpoint 110learns responses over time (e.g., as described in the section regardingdata pattern/instruction correlation), the processor 112 may increaseperiods between wake-up as less instruction may be needed from anexternal source.

The radio 113 serves to enable wireless connectivity between theendpoint 110 and one or more bridges 120. The radio 113 preferablyincludes an RF transceiver and communicates using an antenna coupled tothe endpoint 110. The antenna may be of a variety of antenna types; forexample, patch antennas (including rectangular and planar inverted F),reflector antennas, wire antennas (including dipole antennas), bow-tieantennas, aperture antennas, loop-inductor antennas, ceramic chipantennas, antenna arrays, and fractal antennas.

The radio 113 is preferably a dual-band radio with the first bandoperating on one of the 868 MHz frequency band and the 915 MHz frequencyband, and the second band operating on the 2450 MHz frequency band.Additionally or alternatively, the radio 113 may operate at any suitablenumber of bands at any suitable frequencies (e.g., 782 and/or 779 MHz).

The radio 113 preferably transmits and receives data according to theIEEE 802.15.4 standard, but may additionally or alternatively transmitand receive data according to any standard (or no standard at all). Theradio 113 preferably connects to the bridge 120 wirelessly over apersonal area network (PAN) but may additionally or alternativelyconnect to the bridge 120 in any suitable manner.

The endpoint 110 may additionally include a hardware encryption module(HEM) 114. The HEM 114 is preferably a chip that stores a 256-bitencryption key securely (e.g., the Atmel SHA204) and performs dataencryption based on that key, but may additionally or alternatively beany hardware module capable of encrypting transmissions from and/ordecrypting transmissions to the endpoint no. The encryption process isdescribed in more detail in sections discussing connectivity between theendpoint 110 and bridge 120.

The endpoint no is preferably integrated fabricated with integratedcircuits (ICs) coupled to printed circuit boards (PCBs) but mayadditionally or alternatively be fabricated in any suitable manner.

The bridge 120 functions to provide connectivity between the endpoint noto the router 130. The bridge 120 preferably creates a personal areanetwork (PAN) to communicate with endpoints no, connects to one or morerouters 130 via the internet, and enables traffic to flow between thetwo. In some variations, the bridge 120 may connect to routers 130 via alocal-area network (LAN).

The bridge 120 preferably acts a stateless gateway for the endpoints no.When packets are sent to the bridge 120 from an endpoint 110 on thebridge's PAN, the bridge 120 preferably directs the packet appropriatelyto a router 130. This may include encapsulating the packet into anotherpacket, modifying the packet header, and/or any other packet processingrequired for transmission from the bridge 120 to a router 130. Forexample, if the packet is an 802.15.4 packet, the bridge 120 mayencapsulate that packet into a TCP/IP packet before sending it to therouter 130. The packet payloads are preferably encrypted, and the bridge120 preferably does not perform any decryption; but the headers of thepackets are preferably not encrypted. Additionally or alternatively, thepackets may be encrypted in any other manner (or not at all), and/or thebridge 120 may perform decryption.

In a variation of a preferred embodiment, the bridge 120 may be capableof storing data, providing or verifying security credentials, andperforming compute operations (e.g., allowing offload of computationfrom the endpoint no and/or other systems).

The bridge 120 preferably includes a PAN radio 121, a processor 122, anda WAN communications module 123, as shown in FIG. 5. The bridge 120 mayadditionally or alternatively include a GPS module 124.

The PAN radio 121 functions to create a PAN for communication with oneor more endpoints 110. The PAN created by the PAN radio may additionallyor alternatively be used for communication with other bridges 120. ThePAN radio 121 preferably includes an RF transceiver and communicatesusing one or more antennas coupled to the PAN radio 121. The antenna maybe of a variety of antenna types; for example, patch antennas (includingrectangular and planar inverted F), reflector antennas, wire antennas(including dipole antennas), bow-tie antennas, aperture antennas,loop-inductor antennas, ceramic chip antennas, antenna arrays, andfractal antennas.

The PAN radio 121 preferably includes multiple antennas and uses antennadiversity to increase PAN network reliability. The antennas may use oneor more types of antenna diversity, including spatial diversity (e.g.,physical separation or isolation of antennas), pattern diversity (e.g.,using antennas with different radiation patterns), polarizationdiversity (e.g., using antennas with orthogonal polarizations), and/ortransmit/receive diversity (e.g., using separate antennas for receivingand transmitting). The antennas may additionally or alternatively bemodifiable (e.g., tunable) to adjust electrical characteristics of theantennas. The antennas may be used as part of multiple-in multiple-out(MIMO) communication.

The PAN radio 121 is preferably a dual-band radio with the first bandoperating on one of the 868 MHz frequency band and the 915 MHz frequencyband, and the second band operating on the 2450 MHz frequency band.Additionally or alternatively, the PAN radio 121 may operate at anysuitable number of bands at any suitable frequencies (e.g., 782 and/or779 MHz).

The PAN radio 121 preferably transmits and receives data according tothe IEEE 802.15.4 standard, but may additionally or alternativelytransmit and receive data according to any standard (or no standard atall).

The PAN radio 121 preferably establishes a PAN on a single wirelesschannel in the frequency bands previously mentioned, but mayadditionally or alternatively establish PANs on multiple wirelesschannels. The PAN radio 121 is preferably able to hop between channelsfor a given frequency band (or potentially even across frequency bands)in order to choose channels having a minimum of unwanted noise. The PANradio 121 may hop channels in response to environmental conditions(e.g., the detection of noise above some threshold, congestion, etc.),may hop channels after a set time interval, and/or may hop betweenchannels in response to any other conditions.

The bridge 120 preferably includes a single PAN radio 121 but mayadditionally or alternatively include multiple PAN radios 121 in orderto increase connectivity options. For example, the bridge 120 mayinclude two 802.15.4 radios or one 802.15.4 radio and one Bluetoothradio.

The processor 122 functions to process data transmitted or received bythe bridge 120; data processed by the processor 122 may originate fromthe PAN radio 121, the WAN comm. module 123, interface 111 or from anyother suitable source. The processor 122 is preferably amicrocontroller, but may additionally or alternatively be any suitabletype of microprocessor or other processing unit. The processor 122preferably processes data according to instructions in firmware and/orsoftware, but may additionally or alternatively process data accordingto any other suitable instructions.

The processor 122 preferably performs any change in data format orheader format for data passing between the endpoint 110 and the router130. In one embodiment, the processor 122 preferably encapsulates802.15.4 packets sent by the endpoint 110 in TCP/IP packets beforeforwarding the packets to the router 130 and also strips TCP/IPencapsulated packets received from the router 130 before forwarding themto the endpoint 110.

The processor 122 may additionally be used for frame-checking purposes;that is, the bridge 120 may check frames received from endpoints 110 forerrors using error checking bits contained within the frames.Additionally or alternatively, frame checking may occur at the router130.

The processor 122 preferably also performs power management for thebridge 120, including determining when radios are on, which antennas areused, sleep state settings, and any other setting relevant to powermanagement of the bridge 120.

The processor 122 preferably also serves to establish connectivitybetween the bridge 120 and one or more routers 130. After any connectioninterruption (including a power-off state), the processor 122 preferablyseeks to establish a TCP/IP connection between the bridge 120 and arouter 130. If the TCP/IP connection is irreparable, the processor 122may attempt to establish a multi-hop or mesh connection using its ownPAN connection or another PAN to PAN connection, as shown in FIG. 11A.

The bridge 120 preferably attempts to sustain a TCP/IP connection to atleast one router 130 at all times; if the TCP/IP connection isinterrupted, the bridge preferably attempts to immediately remedy theinterruption. The bridge 120 preferably differentiates betweeninterruptions between the bridge 120 and the router 130 (e.g., aninterruption occurring from loss of bridge internet connection) andinterruptions at the router 130 (e.g., router failure). In the case thata router 130 has failed, the bridge 120 preferably switches to anotherrouter 130.

The WAN communications module 123 functions to connect the bridge 120 tothe router 130. The WAN communications module 123 preferably connectsthe bridge 120 to the router 130 over the internet or other WAN, but mayadditionally or alternatively connect the bridge 120 to the router 130over a LAN. The WAN communications module 123 preferably includes acellular radio, enabling the WAN communications module 123 tocommunicate with routers 130 over existing cellular networks. The WANcommunications module 123 may additionally or alternatively include anyother suitable connection hardware to enable connection with routers130, including Ethernet modules, Wi-Fi radios, Bluetooth radios, and anyother WAN or LAN connection module. In a variation of a preferredembodiment, the WAN communications module may include a radio forcommunicating with another bridge 120 (e.g., over a multi-hop or meshconnection) as shown in FIG. 11B.

The WAN communications module 123 preferably also enables configurationof the bridge 120. For example, the bridge 120 may be configured locallyusing an iPhone or Android phone connecting to the bridge over aBluetooth connection. The bridge 120 may additionally or alternativelyinclude any suitable mechanism to allow configuration from a sourceother than a router 130; for example, a USB port to allow for connectionof a configuring device (e.g., a smartphone, laptop, or dedicatedconfiguration device).

The GPS module 124 functions to provide location data to the bridge 120.The bridge 120 preferably uses location information derived from the GPSmodule 124 for one or both of two purposes.

The first purpose involves determining appropriate whitespace for thePAN radio 121. The bridge 120 preferably contains data correspondinglocation with acceptable broadcast spectra, allowing the bridge 120 tooperate in multiple regulatory environments without pre-knowledge of thearea it will be used in. The bridge 120 preferably checks location usingthe GPS module before establishing a PAN network to determine allowedbroadcast spectra; after the bridge 120 has determined an allowedbroadcast spectrum, the bridge 120 preferably broadcasts on thatspectrum.

Note that broadcast spectra may be set according to other criteria aswell. For example, the bridge 120 may operate in a region where theregulatory environment allows for communication over multiple spectrathat the bridge 120 is capable of broadcasting on. In this example, thebridge 120 may scan the allowed broadcast spectra and choose one of thespectra (or more than one) based on the results of the scan (e.g., thebridge 120 chooses to broadcast on the less congested of two broadcastbands).

The second purpose involves determining appropriate router 130 region(discussed in more detail in later sections). The bridge 120 preferablyuses GPS information from the GPS module 124, along with data containingrouter 130 locations or router region data, to determine appropriaterouters 130 to connect to. Additionally or alternatively, the bridge 120may determine appropriate routers 130 to connect to by any othersuitable method (e.g., selecting the router with the lowest pingregardless of location).

The bridge 120 may additionally include other equipment for increasingnetwork reliability. For example, the bridge 120 may include a backupbattery in case power to the bridge 120 is lost.

The router 130 functions to mediate communication occurring within thesystem 100. The router 130 is in some ways the ‘brain’ of the system100; the router 130 determines what communication may occur between anendpoint 110 and another device (whether that device is internal orexternal to the system 100), performs endpoint no management andaddressing, and may even manage bridge 120 operations.

The router 130 preferably operates using a general-purpose computerserver as a host, but may additionally or alternatively run onspecialized hardware (e.g., switches) or any suitable computing system.The router 130 is preferably located in high-uptime data center alongwith other servers, but may additionally or alternatively be located inany suitable area.

Routers 130 are preferably organized into regions; these regionspreferably correspond to geographic regions but may additionally oralternatively correspond to any other type of region (e.g., regions maybe based on population regions). Routers 130 located in a particularregion preferably are able to connect to many devices of the system 100(i.e., bridges 120, and through bridges 120, endpoints 110) with lowlatency. Decreasing latency may be one of the criteria for determiningregions in addition to population and/or geography. Statedalternatively, one of the advantages of locating routers 130 accordingto regions is that routers 130 of a particular region preferably havelower latency or higher reliability connections to the devicesassociated with that region than they would if the routers 130 werelocated in central locations for all regions.

Regions also a play a role in endpoint 110 addressing. Endpoints 110 arepreferably assigned virtual IPv6 addresses by routers 130; the IPv6addresses are preferably generated from both an endpoint no's unique MACaddress and an IPv6 prefix corresponding to the region associated withthe endpoint 110. For example, an endpoint 110 with MAC addressa1b2.a2b3.a235 in a region associated with an IPv6 prefix of2001:odb8:85a3:0000 might receive a virtual IPv6 address of2001:odb8:85a3:0000:0000:a1b2.a2b3.a235, alternatively written as2001:db8:85a3::a1b2.a2b3.a235.

Information about the endpoints 110 connected to routers 130 in aparticular region is preferably stored in a hash table distributedacross the routers 130 of that region. Additionally or alternatively,the information (e.g., Endpoint MAC address, last seen time, bridgeconnection, etc.) may be stored in any suitable location or format. Thedistributed hash table of a region may include other informationrelevant to the system 100; for example, bridge 120 channel settings orany other suitable data. Key data (or even all data) from thedistributed hash table may be cached in router 130 memory to enable fastaccess to data.

Regions are preferably designed to have N+1 redundancy, so that if arouter 130 in a region fails, that router's responsibility istransferred over to another router 130 in the region. Likewise, thedistributed hash table preferably shares this redundancy (that is, itcan be completely reconstructed in the event of a router 130 failure).If multiple failures occur across a region, the system 100 preferablyenables the transfer of operations from one region to another.

The key server 140 preferably functions to store ‘super secret keys’associated with endpoints 110 for purposes of encryption. The key server140, like the routers 130, preferably operates using a general-purposecomputer server as a host, but may additionally or alternatively run onspecialized hardware (e.g., switches) or any suitable computing system.Unlike the routers 130, the key server 140 is preferably centralized(i.e., not located in the same edge-of-the-internet data centers as therouters 130); additionally or alternatively, key servers 140 may beco-located with routers 130 or may exist in any suitable location. Thesuper secret keys are preferably used as described in followingsections; the key server 140 may additionally or alternatively store anyother sensitive information related to system 100 security.

The following sections describe methods of communication on the system100, including network setup routines. Specifically, bridge setuproutines, endpoint setup routines, and communication methods (includingencryption) will be discussed in respective order.

When a bridge 120 is first connected to the internet, (or othernetwork), the bridge 120 attempts to find a router 130 to connect to.The bridge 120 preferably searches for routers by contacting routers ona list stored within the bridge 120; additionally or alternatively, thebridge 120 may first request such a list from a central server of thesystem 100. The bridge 120 preferably connects to a router 130 based onthe results of contact; for example, a bridge 120 might connect to arouter 130 by contacting a list of routers 130 and selecting the onewith the lowest response latency. Additionally or alternatively, thebridge 120 may connect to a router 130 based on any other suitableinformation; for example, the bridge 120 may request connections from agroup of routers 130. The routers 130 may then communicate to each otherto determine which router 130 the bridge 120 should connect to (e.g.,based on router load); that router 130 preferably then responds to thebridge. Other information may also include GPS information from thebridge GPS module 124; for example, the bridge 120 may only request tojoin or may only join routers 130 associated with a particulargeographic region.

Once the bridge 120 has selected a router 130, the bridge 120 preferablyopens a TCP/IP socket connection with the router 130. The TCP/IP socketconnection is preferably encrypted (e.g., by TLS/SSL). After the TCP/IPconnection has been established, the bridge 120 preferably maintains theconnection at all times. If the connection is severed for some reason,the bridge 120 preferably immediately attempts to reestablish theconnection (described in sections detailing the bridge 120). The bridge120 may additionally or alternatively open a connection to one or morebackup routers 130 (or may simply have them listed as particular backupoptions to try if the primary router 130 fails). The bridge 120 mayadditionally or alternatively attempt to connect using multi-hop or meshnetworking over a PAN connection. During this process, the bridge 120may be assigned an identifier in distributed hash tables stored by therouters 130. The bridge 120 may additionally or alternatively provideinformation about itself; for example, a bridge 120 may transmit its GPScoordinates or results of a radio scan of the area the bridge 120 islocated in.

The bridge 120 preferably also begins broadcasting a PAN to allowendpoints 110 to connect to the bridge 120. The bridge 120 may choosethe PAN channel and communications settings (e.g., bit rate, channelwidth, etc.) based on internal rules stored within the bridge 120,additionally or alternatively, the bridge 120 may choose these settingsaccording to instructions from the router 130 the bridge 120 isconnected to.

When an endpoint no is powered on, the endpoint no preferablyimmediately searches for one or more bridges 120 across a wirelessspectrum defined by the endpoint no. Once the endpoint no finds a bridge120 to connect to, the endpoint no preferably sends a network joinrequest to the bridge 120. This network join request is preferablyforwarded to a router 130 by the bridge 120. Once the network joinrequest has been received by the router 130, the router 130 preferablyuses identifying information stored within the network join request(e.g., the source address in the frame header) to look up the endpointno in a distributed hash table associated with the router region. If theendpoint no is not found within the router region's distributed hashtable, the router 130 will contact routers 130 in other regions todetermine if the endpoint no has moved regions; if the endpoint no hasmoved regions, the distributed hash table of the previous region ispreferably updated. In either case, an entry is preferably createdwithin the distributed hash table of the current region if the router130 accepts the endpoint no's join request. Further, the router 130preferably then sends a join acknowledgment to the endpoint 110. Therouter 130 may additionally assign a transmission timeslot to theendpoint 110 (based on other transmission timeslots for a given bridge120 or group of bridges 120).

While this describes in general the endpoint 110 connection process, theprocess preferably includes encryption. The encryption protocol for thesystem 100 preferably enables the system 100 to perform encryption thatsatisfies the following:

-   -   a. Allows endpoints no to verify that the network they are        connecting to is the genuine network of the system 100,    -   b. Allows the system 100 to verify that an endpoint 110        connecting to the system is a known entity (the system 100        preferably does not allow unauthorized access),    -   c. Guards against the possibility of replay attacks,    -   d. Encrypts each packet with a different key value such that        sending the same data packet repeatedly does not give clues to        the packet contents,    -   e. Encrypts the payload, but not the header, of transmitted        frames (as in the 802.15.4 standard), and    -   f. Allows newly manufactured devices to join the network without        encryption keys being discoverable by eavesdroppers.

The encryption protocol is preferably based upon AES256 encryption, butmay additionally or alternatively use any suitable encryption scheme. Inaddition to standard AES256 encryption considerations, the encryptionscheme is preferably structured such that if any endpoint 110 or bridge120 were to be reverse-engineered, that the damage would be limited toonly that endpoint 110 or bridge 120 (or alternatively, a small set ofendpoints no or bridges 120. In other words, each device performingencryption preferably has a separate secret key used for generatingencryption keys. Alternatively, any number of devices may share secretkeys. Secret keys for endpoints 110 are preferably stored within the HEM114.

As shown in FIG. 5, a first encryption approach begins when the endpointno sends a frame, the endpoint no preferably begins by appending theendpoint no's MAC address (or other identifier) to a nonce; a nonceserving as a counter that is incremented once every data frame. (Notethat alternatively, the nonce may be appended to the MAC address, or thetwo may be combined in any other manner). Then, the endpoint notransmits the MAC+nonce value to the HEM 114, which appends a secret keyto the MAC+nonce value (likewise, the secret key may be combined withthe MAC+nonce value in any manner). The secret+MAC+nonce value is thenused as input to a key-generating algorithm (preferably SHA256) in theHEM 114 to produce an encryption key that can be used to encrypt theframe. Once the encryption key has been generated, the endpoint 110preferably encrypts the frame payload using the encryption key. Theframe payload, along with a header that includes the nonce and endpointno address (related to the endpoint MAC address), are sent over the air(OTA) to the bridge 120, where they are then encapsulated and forwardedto a router 130. At the router 130, the encryption key is generatedusing the same process; the router 130 requests the appropriate secretkey from the key server 140 (linked to endpoint no MAC address), anduses the MAC address, secret key, and transmitted nonce to generate theencryption key. Finally, the router 130 decrypts the frame payload.Frames sent from the router 130 to the endpoint no preferably areencrypted using a process substantially similar to the reverse of theprocess described above (and as shown in FIG. 6).

The system 100 preferably uses an encryption process similar to theabove process modified such that the endpoint 110 does not need togenerate a new key for each frame (as key generation can be timeconsuming). The system 100 preferably uses a join key/session keyapproach based on the above encryption process, as described below.

As shown in FIG. 7, when an endpoint 110 joins a PAN of the system 100for the first time (or for the first time after some time interval), theendpoint no preferably generates a join key (an encryption keyspecifically used for joining the PAN). As in the previously describedmethod, the endpoint no first appends the endpoint no's MAC addresses toa nonce. Here, the nonce is preferably a 64-bit value that contains 24bits of random data, 32 bits of the current time, and an 8-bit rollingframe index. The nonce may additionally or alternatively be any suitablenonce, though the nonce preferably is different for each frame sent froman endpoint no. The MAC+nonce value is then preferably transmitted tothe HEM 114, which appends a secret key to the MAC+nonce value, and thenuses the secret+MAC+nonce value to generate an encryption key(specifically, the join key). The algorithm used to generate the joinkey is preferably a SHA256 algorithm, but may additionally oralternatively be any suitable key-generating algorithm. Once the joinkey has been generated, the endpoint no preferably encrypts a NetJoinAskframe with the join key, and transmits the encrypted frame, along with aprecursor, over the air to a bridge 120. At the bridge 120, theencrypted frame and precursor are preferably then forwarded to a router130 (after being encapsulated in a TCP/IP packet). The precursorpreferably contains the nonce value, except that the 32-bit time ispreferably truncated to its 8 lowest bits. Additionally oralternatively, the precursor may contain any amount of informationsuitable for recovering the nonce value.

At the router 130, the join key is preferably generated using the sameprocess; the 64-bit nonce is generated by adding the 24 highest bitsback to the 8 lowest (i.e., least significant) bits. This addition worksas long as the join key is generated within 127 of seconds of theoriginal generation (at the endpoint 110). Generating the nonce in thisway preferably substantially limits the opportunity window for potentialreplay attacks, because any replay attacks must complete within 127seconds.

The router 130 preferably then generates a second nonce and a secondencryption key (referred to as a session key), encrypts a NetJoinAnsframe and transmits it along with a precursor based on the second nonce,where it is then decrypted at the endpoint 110 after the endpoint 110generates the session key.

At this point, the endpoint 110 and router 130 now both have the sessionkey, which may be used to communicate for a set window of time (or evenindefinitely). The session key preferably expires after a set timeinterval, but may additionally or alternatively expire after particularevents (e.g., the connection of a certain additional number of devicesto the PAN, a security event, or any other event occurring with orrelated to the system 100).

Note that while the encryption process for communications from therouter 130 to the endpoint no is preferably substantially similar to theencryption process used for communications from the endpoint no to therouter 130, there may alternatively be some variations; for example,communications from the router 130 may include the full 32-bit time inthe precursor (as opposed to the eight least significant bits).

Using a separate join and session key has the advantage that the key forcommunication is generated fully within the key server 140 (or otherpart of the system 100 not local to the endpoint 110), which may furtherincrease security over using a key generated at a potentiallycompromised endpoint no.

The system 100 preferably never reuses the same key and noncecombination twice; this may create a serious security vulnerability.Each encrypted frame is preferably encrypted with a nonce that neverrepeats; non-repetition of the nonce is preferably enabled by using anonce that includes both the current time and an incrementing index. Aslong as a nonce sends less than 255 frames per second (i.e., as long asthe index does not repeat for a given time value), the nonce will notrepeat.

The Router and each endpoint will track the frames received from theother side, and record the time/sequence values. This aspect of thenonce may additionally be used for extra security; the router 130 and/orendpoint no can check that the part of the nonce corresponding to timeand index always increments (e.g., if the router 130 receives a frameassociated with a time value and an index value, the next frame receivedshould have either a higher time value or a higher index value). Therouter 130 or endpoint no may reject frames without incrementedtime+index values.

If an endpoint no has previously communicated with a router 130 using asession key, but disconnects from the PAN, the endpoint no may attemptto re-use the previously used session key. The endpoint 110 mayaccomplish this by sending an ftAssociateReq frame with the random bitsof the nonce field set to zero; the router 130 preferably detects thezero value and attempts to decode the frame using a stored session key.Additionally or alternatively, the endpoint 110 may generate a join keyfor each reconnection.

Example formats for NetJoinAsk frames, NetJoinAns frames, and dataframes are as shown in FIGS. 8, 9, and 10 respectively.

The above description describes random numbers used in nonce generation.The random numbers used to generate keys are preferablycryptographically secure. The router 130 preferably generates randomnumbers using the crypto/rand package standard library from the Golanguage, but may additionally or alternatively use any suitable randomnumber generator. The endpoint no preferably uses a hardware randomnumber generator, such as the one built into the AT86RF233 transceiverchip, which generates random numbers based on observed radio noise. Toincrease the security of random numbers generated, these random numbersmay be used to seed a SHA2 stream of random numbers (as opposed to beingused directly by the endpoint no or router 130. Each new batch of randomnumbers is preferably an SHA digest of the previous batch XOR-ed with 32bytes of new unpredictable data (e.g., the output of the previouslydescribed random number generators).

Messages transmitted in the system 100 may additionally include dataintegrity checks. Without such checks, data transmitted in the system100 may be vulnerable to transmission/reception errors as well ascertain types of network attacks.

For example, a data frame that has a payload length of 100 bytes isencrypted with AES-256 such that each block has a length of 16 bytes. Anattacker could intercept the frame before reception, and alter only thelast 68 bytes, leaving the first 32 bytes (i.e., the header and thefirst encrypted block) unchanged. Then, the attacker could transmit thealtered frame to the intended recipient, where the header would bevalidated and the first block decrypted successfully, but the rest ofthe received data would be corrupted.

The system 100 may address this issue by adding a checksum or hash tothe end of the payload before encrypting; the payload could then beverified against the checksum or hash after decryption. If the checksumor hash did not properly check out, the frame may be discarded. In someimplementations of the system 100, NetJoinAsk and NetJoinAns framesinclude a 4-byte CRC in the header (unencrypted), while data framesinclude a CRC appended to the payload before encryption.

The system 100 may additionally or alternatively employ any othersuitable data security or data integrity mechanisms.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the preferred embodiments of the invention withoutdeparting from the scope of this invention defined in the followingclaims.

1. A system for smart device networking comprising: an endpoint operableto enable communication with a connected device, the endpoint comprisinga first multi-band radio: a bridge comprising: a second multi-band radiooperable to communicate with the first multi-band radio of the endpointon a first broadcast spectrum of a set of broadcast spectra; ageolocation module operable to collect geolocation data associated witha location of the bridge; a processing system operable to select thefirst broadcast spectrum from the set of broadcast spectra based on thegeolocation data, a set of allowed broadcast spectra associated with thelocation of the bridge, and a set of spectrum bands supported by thesecond multi-band radio; and a WAN communications module operable tocommunicatively couple to a WAN; and a router, operating on a server andconnected to the bridge through the WAN, wherein the router is operableto route communication to and from the endpoint.
 2. The system of claim1, wherein the first broadcast spectrum comprises a first frequencyband, wherein the set of broadcast spectra comprises a set of frequencybands, and wherein the processing system is operable to select the firstfrequency band from the set of frequency bands based on the geolocationdata, a set of allowed frequency bands associated with the location ofthe bridge, and the set of spectrum bands supported by the secondmulti-band radio.
 3. The system of claim 2, wherein the processingsystem is operable to switch operation of the second multi-band radiofrom the first frequency band to a second frequency band based ondetected network conditions associated with the first and the secondfrequency bands.
 4. The system of claim 3, wherein the bridge isoperable to scan a subset of frequency bands from the set of frequencybands, and wherein the processing system of the bridge is operable todetermine the detected network conditions based on the scan.
 5. Thesystem of claim 2, wherein the second multi-band radio of the bridge isoperable to communicate with the first multi-band radio of the endpointon a subset of channels from a set of channels for the first frequencyband; and wherein the processing system of the bridge is operable toselect the subset of channels based on the geolocation data and a set ofallowed channels for the first frequency band, wherein the set ofallowed channels is associated with the location of the bridge.
 6. Thesystem of claim 1, wherein the bridge further comprises a thirdmulti-band radio operable to communicate with the first multi-band radioof the endpoint on a second broadcast spectrum of the set of broadcastspectra, wherein the processing system is operable to select between thesecond and the third multi-band radios based on detected networkconditions.
 7. The system of claim 1, further comprising a set ofrouters comprising the router, wherein the processing system of thebridge is operable to select an appropriate router from the set ofrouters based on the geolocation data, and wherein the WANcommunications module is operable to connect to the appropriate router.8. The system of claim 7, wherein the WAN communications modulecomprises a default communications submodule and a supplementarycommunications submodule, wherein the supplementary communicationssubmodule is operable to communicatively couple to the WAN in responseto failure of the default communications submodule to connect to theWAN.
 9. The system of claim 8, wherein the default communicationssubmodule comprises a cellular communications submodule, and wherein thesupplementary communications submodule comprises an Ethernetcommunications submodule.
 10. The system of claim 1, further comprisinga set of routers operable to route communication to and from theendpoint according to a first distributed hash table and a seconddistributed hash table, wherein the set of routers comprises: a firstsubset of routers associated with a first geographic region, wherein thefirst distributed hash table is distributed across the first subset ofrouters, and wherein the first subset of routes comprises the router;and a second subset of routers associated with a second geographicregion, wherein the second distributed hash table is distributed acrossthe second subset of routers, and wherein an entry, corresponding to theendpoint, in the second distributed hash table is removed after theendpoint has moved to the first geographic region from the secondgeographic region.
 11. The system of claim 10, wherein the router isoperable to assign the endpoint a virtual IPv6 address comprising anIPv6 preset associated with the first geographic region, and a MACaddress of the endpoint.
 12. The system of claim 1, wherein the endpointfurther comprises a microprocessor communicatively coupled to a sensorof the connected device, wherein the microprocessor is operable to:generate a comparison between received sensor data and historical sensordata sampled by the sensor; and transmit the received sensor data inresponse to the comparison satisfying a threshold condition.
 13. Amethod for smart device networking comprising: determining location dataassociated with a location of the bridge; identifying a set of allowedbroadcast spectra associated with the location of the bridge;determining a first broadcast spectrum from a set of broadcast spectrabased on the location data, the set of allowed broadcast spectra, and aset of spectrum bands supported by a first radio of the bridge; enablingcommunication on the first broadcast spectrum between the first radio ofthe bridge and a second radio of the endpoint; receiving data at theendpoint from a connected device; and transmitting the data from theendpoint to a WAN through the bridge.
 14. The method of claim 13,wherein determining location data comprises determining geolocationdata, with a geolocation module, corresponding to the location of thebridge, wherein determining the first broadcast spectrum comprisesdetermining the first broadcast spectrum based on the geolocation data,the set of allowed broadcast spectra, and the set of spectrum bandssupported by the second radio of the bridge.
 15. The method of claim 14,wherein determining location data comprises determining, at a firsttime, initial location data corresponding to an initial location of thebridge, wherein determining geolocation data comprises determininggeolocation data at a second time after the first time, and whereindetermining the first broadcast spectrum comprises: selecting the firstbroadcast spectrum based on the initial location data, the set ofallowed broadcast spectra, and the set of spectrum bands supported bythe first radio; and selecting a channel from the first broadcastspectrum based on the geolocation data.
 16. The method of claim 13,wherein enabling communication on the first broadcast spectrum comprisesenabling communication on the first broadcast spectrum between a set ofendpoints and a set of bridges, and wherein transmitting the data fromthe endpoint to the WAN through the bridge comprises selecting thebridge from the set of bridges to receive the data based on the locationdata.
 17. The method of claim 16, further comprising: performing a radioscan with the bridge, wherein determining the location data comprisesdetermining an endpoint location of the endpoint based on the radioscan, wherein determining the first broadcast spectrum comprisesdetermining the first broadcast spectrum based on the radio scan, andwherein selecting the bridge from the set of bridges comprises selectingthe bridge based on the endpoint location.
 18. The method of claim 17,wherein enabling communication between the first radio of the bridge andthe second radio of the endpoint comprises automatically transitioningthe second radio of the endpoint from a first frequency band to a secondfrequency band based on the radio scan.
 19. The method of claim 13,wherein identifying the set of allowed broadcast spectra and determiningthe first broadcast spectrum are performed at a remote server, andwherein enabling communication on the first broadcast spectrumcomprises: generating, at the remote server, control instructions forthe bridge to operate the first radio on the first broadcast spectrum;and transmitting the control instructions from the remote server to thebridge.
 20. The method of claim 19, further comprising: determining atransmission schedule for transmitting the data from the endpoint to theWAN; determining a firmware update schedule based on the transmissionschedule; and transmitting a firmware update from the remote server tothe endpoint through the bridge, according to the firmware updateschedule.